package mathClass

/*
方法一:32位内的最大3的幂除以n，如果能除尽说明是3的幂
时间复杂度：O(1)
空间复杂度：O(1)
*/

func isPowerOfThree(n int) bool {
	return n > 0 && 1162261467%n == 0
}

/*
方法二:模拟
时间复杂度：O(logN)
空间复杂度：O(1)
*/

func isPowerOfThree1(n int) bool {
	for n > 1 {
		if n%3 != 0 {
			return false
		}
		n /= 3
	}
	return n == 1
}
